package AssetPurchaseRequest

import (
	"ToolLibray/jwtx"
	"context"
	"property_api/internal/svc"
	"property_api/internal/types"
	"property_api/utils/result"
	"property_service/property_service"

	"github.com/zeromicro/go-zero/core/logx"
)

type PagesLogic struct {
	logx.Logger
	ctx    context.Context
	svcCtx *svc.ServiceContext
}

func NewPagesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *PagesLogic {
	return &PagesLogic{
		Logger: logx.WithContext(ctx),
		ctx:    ctx,
		svcCtx: svcCtx,
	}
}

// Pages 查询采购申请单的分页逻辑
func (l *PagesLogic) Pages(req *types.AssetPurchaseRequestPageReq) (resp *types.PageRes, err error) {
	// 设置租户ID，从上下文中获取
	tenantID := jwtx.GetUserTenantId64(l.ctx)

	// 构建查询条件对象
	where := &property_service.AssetPurchaseRequest{
		ID:             req.ID,             // 记录ID
		TenantID:       tenantID,           // 租户ID
		RequestCode:    req.RequestCode,    // 申请单号
		PurchaseMonth:  req.PurchaseMonth,  // 购置年月
		RequestType:    req.RequestType,    // 申请类型
		RequestTypeID:  req.RequestTypeID,  //申请类型ID
		PlanNumber:     req.PlanNumber,     // 计划号
		RequestDept:    req.RequestDept,    // 申请科室
		RequestDeptID:  req.RequestDeptID,  // 申请科室id
		Applicant:      req.Applicant,      // 申请人
		ApplicantID:    req.ApplicantID,    // 申请人id
		CompileDate:    req.CompileDate,    // 编制日期
		Remarks:        req.Remarks,        // 备注
		PurchaseStatus: req.PurchaseStatus, // 采购状态（0-申请 1-成功）
		StatusID:       req.StatusID,       // 状态ID(关联状态表StatusDisposition)
		StatusName:     req.StatusName,     // 采购状态（0-申请 1-成功）
		StockID:        req.StockID,        // 仓库ID
	}

	// 调用服务层方法，查询采购申请单记录的分页数据
	// 服务层方法 AssetPurchaseRequestPage 会处理实际的数据库查询操作
	data, err := l.svcCtx.AssetService.AssetPurchaseRequestPage(l.ctx, &property_service.AssetPurchaseRequestPageReq{
		Page:  req.Page,  // 当前页码
		Limit: req.Limit, // 每页条数
		Where: where,     // 查询条件
	})

	// 返回分页数据的响应
	return result.SucPage(data, types.AssetPurchaseRequest{}).PageEd()
}
